import { keys } from 'lodash'
// 语言资源包
const messages: Record<string, any> = {}

// 提取语言名称和命名空间的正则
const matchReg = /\/(.*)\/(.*)\.json/

const req = import.meta.glob('./*/*.json', { eager: true })

// 载入资源包函数
const requireAll = (requireContext: any) => {
  // 得到匹配到的路径
  const keyList = keys(requireContext)
  keyList.forEach((path: string) => {
    if (!path) {
      return
    }
    // 提取语言和命名空间
    const match = path.match(matchReg)
    // 如果提取结果为预期结果才进行操作，否则不操作
    if (match && match.length === 3) {
      const langName = match[1]
      const nameSpace = match[2]
      // 如果当前的message 中没有该语言选项，先用空对象占位防止报错
      if (!messages[langName]) {
        messages[langName] = {}
      }
      // 将加载进来的语言资源存入messages 对应的语言和命名空间中
      messages[langName][nameSpace] = requireContext[path].default
    }
  })
}

requireAll(req)

export default messages
